Tengo un conjunto de datos como se indica a continuación nombre col1 col2 a 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5,3 5,4 f 4.5 4.0 quiero comparar col1 y col2 de mi df y quiero hacer otra columna en la que, al comparar los valores de col1 y col2, si el valor de col2 aumenta desde col1, entonces quiero ingresar aumentando junto a ellos en mi columna allí y si están decreciente, entonces quiero escribir decreciente y sin cambios si son iguales y quiero mi salida como esta nombre col1 col2 col3 a 10,3 10,9 creciente b 11 15 creciente c 20 7.2 decreciente d 6.2 6.2 sin cambios e 5.3 5.4 creciente f 4.5 4.0 decreciente
2021-01-31 08:16:09
Con dplyr: df%>% mutate (Col3 = ifelse (col2 == col1, "ningún cambio", ifelse (col2> col1, "aumentando", "disminuyendo"))) O usando case_when como lo sugiere @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "sin cambios", col2> col1 ~ "Aumentando", VERDADERO ~ "decreciente")) Resultado: nombre col1 col2 Col3 1 a 10,3 10,9 creciente 2 b 11.0 15.0 creciente 3 c 20,0 7,2 decreciente 4 d 6,2 6,2 sin cambios 5 e 5,3 5,4 creciente 6 f 4.5 4.0 decreciente Datos: df <-estructura (lista (nombre = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Podemos restar col1 por col2 y luego usar el signo para asignar valores df $ col3 <- c ("decreciente", "sin cambios", "creciente") [sign (df $ col1 - df $ col2) + 2] df # nombre col1 col2 col3 # 1 a 10,3 10,9 decreciente # 2 b 11.0 15.0 decreciente # 3 c 20.0 7.2 creciente # 4 d 6.2 6.2 sin cambios # 5 e 5.3 5.4 decreciente # 6 f 4.5 4.0 creciente O usando dplyr podemos usar case_when biblioteca (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "sin cambios", col1> col2 ~ "aumentando", VERDADERO ~ "decreciente")) | Base R df $ col3 <-with (df, ifelse (col1> col2, "decreciente", ifelse (col1